package 每日一题;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.zip.Adler32;

/**
 * @author chenhong
 * @version 1.0.0
 * @ClassName L2363.java
 * @createTime 2023年02月28日 11:46:00
 */
public class L2363 {
}

class Solution2363 {
    public List<List<Integer>> mergeSimilarItems(int[][] items1, int[][] items2) {
        List<List<Integer>> ret = new ArrayList<>();
        Arrays.sort(items1, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0] - o2[0];
            }
        });
        Arrays.sort(items2, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0] - o2[0];
            }
        });
        int i = 0, j = 0;
        while (i < items1.length && j < items2.length) {
            ArrayList<Integer> list = new ArrayList<>();
            if (items1[i][0] < items2[j][0]) {
                list.add(items1[i][0]);
                list.add(items1[i++][1]);
            } else if (items1[i][0] > items2[j][0]) {
                list.add(items2[j][0]);
                list.add(items2[j++][1]);
            }else {
                list.add(items1[i][0]);
                list.add(items1[i++][1] + items2[j++][1]);
            }
            ret.add(list);
        }
        if (i == items1.length) {
            while (j < items2.length) {
                ArrayList<Integer> list = new ArrayList<>();
                list.add(items2[j][0]);
                list.add(items2[j++][1]);
                ret.add(list);
            }
        }
        if(j== items2.length){
            while (i < items1.length) {
                ArrayList<Integer> list = new ArrayList<>();
                list.add(items1[i][0]);
                list.add(items1[i++][1]);
                ret.add(list);
            }
        }
        return ret;
    }
}